package partTwo;
/*
本类用于测试代码块
执行顺序：构造代码块>构造方法>对象创建成功>普通婆方法>局部代码块
1.当创建对象时，会触发构造函数
2，创建对象时，也会触发构造代码块，而且构造代码块优先于构造方法执行
3.我们通过创建好的对象来调用普通的方法
4.如果代用的普通方法里有局部代码块，对应的局部代码块才会执行
 */
import jdk.nashorn.internal.ir.CatchNode;

//本类用于测试代码块
public class TestBlock {
    public static void main(String[] args) {
        //创建小猫类对象
        Cat c1 = new Cat();
        Cat c2 = new Cat("缅因猫");
        Cat c3 = new Cat();
        c3.jump();
    }
}

//创建小猫类用来测试
class Cat{


    //2，定义属性
    String food;

    //创建代码块
    {
        /*构造代码块：
         * 位置：类里方法外
         * 执行时机：每次创建对象时，都会执行构造代码块，并且构造代码块优先于构造方法执行
         * 作用：用于提取所有构造方法的共性功能  */
        System.out.println("我是一个构造代码块");
        System.out.println("今天的你真好看");
        food = "小鱼干";
    }

    //3.1创建无参构造
    public Cat(){
        System.out.println("我是Cat的无参构造"+food);
    }

    public Cat(String s){
        System.out.println("我是小猫的含参构造"+s+food);
    }

    //4.创建普通方法
    public void jump(){
        System.out.println("小猫跳的老高了");
//创建局部代码块
        {
        /*
        局部代码块
        位置：方法里
        执行时机：代用本局部代码块所处的方法时才会执行
        作用：控制变量的使用范围，变量的作用范围要越小越好
         */
            System.out.println("我是一个局部代码块");
            int i = 100;
            System.out.println(i);
        }
        //System.out.println(i);局部变量i只能在局部代码块里用
    }
}